CPPCMD=mpic++
CFLAGS=-w
CPLFLAGS=$(CFLAGS) -c
CPP=$(CPPCMD) $(CPLFLAGS)
CPPRUN=$(CPPCMD) $(CFLAGS)

KPATH=./Classifier/KNN

MAINOBJS=Classifier.o DataSplit.o Divider.o DummyMain.o \
	Divider_Randomize.o Logger.o M3.o M3Master.o M3Slave.o MemoryManager.o Options.o Voter.o\
	$(KPATH)/KNN.o $(KPATH)/Similar.o $(KPATH)/VoteKNN.o $(KPATH)/KNNPP.o



m3: $(MAINOBJS)
	$(CPPRUN) $(MAINOBJS) -o m3

DummyMain.o: Classifier.o DataSplit.o Divider.o \
	Divider_Randomize.o Logger.o M3.o M3Master.o M3Slave.o MemoryManager.o Options.o Voter.o
	$(CPP) DummyMain.cpp -o DummyMain.o

Logger.o: 
	$(CPP) Logger.cpp -o Logger.o

MemoryManager.o: Logger.o
	$(CPP) MemoryManager.cpp -o MemoryManager.o

Voter.o: MemoryManager.o Logger.o
	$(CPP) Voter.cpp -o Voter.o

Options.o: Logger.o MemoryManager.o
	$(CPP) Options.cpp -o Options.o

DataSplit.o: Logger.o MemoryManager.o
	$(CPP) DataSplit.cpp -o DataSplit.o

M3.o: M3Master.o M3Slave.o Logger.o MemoryManager.o Options.o Classifier.o Divider.o
	$(CPP) M3.cpp -o M3.o

M3Master.o: Voter.o Divider.o DataSplit.o Logger.o MemoryManager.o Options.o Voter.o
	$(CPP) M3Master.cpp -o M3Master.o

M3Slave.o: Divider.o Classifier.o Logger.o MemoryManager.o Options.o
	$(CPP) M3Slave.cpp -o M3Slave.o

Divider.o: Divider_Randomize.o MemoryManager.o Logger.o Options.o
	$(CPP) Divider.cpp -o Divider.o

Divider_Randomize.o: MemoryManager.o Logger.o Options.o
	$(CPP) Divider_Randomize.cpp -o Divider_Randomize.o

Classifier.o: Divider.o Options.o ./Classifier/KNN/KNN.o ./Classifier/KNN/KNNPP.o
	$(CPP) Classifier.cpp -o Classifier.o


#include ./Classifier/KNN/Makefile
###########################
MPATH=.


./Classifier/KNN/KNN.o: $(MPATH)/MemoryManager.o $(MPATH)/Logger.o $(MPATH)/Divider.o $(MPATH)/Options.o $(KPATH)/VoteKNN.o $(KPATH)/Similar.o
	$(CPP) $(KPATH)/KNN.cpp -o $(KPATH)/KNN.o

./Classifier/KNN/KNNPP.o: $(MPATH)/MemoryManager.o $(MPATH)/Logger.o $(MPATH)/Divider.o $(MPATH)/Options.o $(KPATH)/VoteKNN.o $(KPATH)/Similar.o
	$(CPP) $(KPATH)/KNNPP.cpp -o $(KPATH)/KNNPP.o

./Classifier/KNN/Similar.o: $(MPATH)/MemoryManager.o $(MPATH)/Logger.o
	$(CPP) $(KPATH)/Similar.cpp -o $(KPATH)/Similar.o

./Classifier/KNN/VoteKNN.o: $(MPATH)/MemoryManager.o $(MPATH)/Logger.o
	$(CPP) $(KPATH)/VoteKNN.cpp -o $(KPATH)/VoteKNN.o
###########################


clean: clean_classifier
	rm *.o m3 -r

clean_classifier:
	rm ./Classifier/KNN/*.o -r